﻿//using System;
//using System.Collections.Generic;
//using System.Drawing;


//namespace Petra.Gis.RenderingServices.GDIPlus
//{
//  public static class ClipLine
//  {

//    public static float xleft, xright, ybottom, ytop;

//    static Rectangle result = new Rectangle(0, 0, 0, 0);

//    public static Rectangle Clip(int x1, int y1, int x2, int y2)
//    {

//      double u1 = 0;
//      double u2 = 1;
//      int Dx = x2 - x1;
//      int Dy;

//      if (cliptest(-Dx, (x1 - xleft), ref u1, ref u2))
//      {
//        if (cliptest(Dx, xright - x1, ref u1, ref u2))
//        {
//          Dy = y2 - y1;
//          if (cliptest(-Dy, (y1 - ybottom), ref u1, ref u2))
//          {
//            if (cliptest(Dy, (ytop - y1), ref u1, ref u2))
//            {
//              if (u2 < 1)
//              {
//                x2 = x1 + (int)(u2 * Dx);
//                y2 = y1 + (int)(u2 * Dy);
//              }
//              if (u1 > 0)
//              {
//                x1 = x1 + (int)(u1 * Dx);
//                y1 = y1 + (int)(u1 * Dy);
//              }

//              return new Rectangle(x1, y1, x2, y2);
//              //glColor3f(225.,0.,0.);
//              //DrawLine(x1,y1,x2,y2);
//              //glFlush();

//            }
//          }
//        }
//      }
//      return result;
//    }

//    private static bool cliptest(float p, float q, ref double u1, ref double u2)
//    {
//      double r;
//      bool result = true;

//      if (p < 0)
//      {
//        r = q / p;
//        if (r > u2)
//          result = false;
//        else if (r > u1)
//          u1 = r;
//      }
//      else if (p > 0)
//      {
//        r = q / p;
//        if (r < u1)
//          result = false;
//        else if (r < u2)
//          u2 = r;
//      }
//      else if (q < 0)
//        result = false;

//      return result;
//    }


//  }
//}
